// 接口请求封装
const baseUrl = ""
// 参数拼接
const queryString = (params) => {
    if (Object.keys(params).length > 0 && params !== '{}') {
        return '?' + Object.keys(params).map(key => `${key}=${encodeURIComponent(params[key])}`).join('&')
    }
    return ''
}

// post 请求
async function requestPostAPI(url, data = {}) {
    let headers = {
        'Content-Type': 'application/json',
    }
    return await requestAPI(url, "POST", data, headers)
}

// get 请求
async function requestGetAPI(url, data = {}) {
    let headers = {
        'Content-Type': 'application/json',
    }
    return await requestAPI(url, "GET", data, headers)
}

// 通用请求
async function requestAPI(url, method, data, headers) {
    try {
        let options = {
            method: method || "GET",
            headers: {
                ...headers
            },
            body: JSON.stringify(data) || JSON.stringify({})
        };
        if (options.method.toUpperCase() === "GET") {
            url = baseUrl + url + queryString(data)
            delete options.body
        } else {
            url = baseUrl + url
        }
        // 可以做一些请求前的操作
        const res = await fetch(url, options)
        // 根据Fetch API的规范，res.ok属性为true的条件是HTTP状态码在200到299之间。
        if (res.status === 200) {
            // 约定只有200时，才返回数据
            const pageData = await res.json()
            return Promise.resolve(pageData)
        } else {
            // 做一些code 不等于200的处理
            console.log('HTTP响应结果', res)
            let errMsg = '接口调用异常: HTTP状态码' + res.status
            if (res.status === 404) {
                errMsg = '调用接口不存在，请核对接口地址'
            }
            // 返回错误信息
            return {
                success: false,
                msg: errMsg
            }
        }
    } catch (err) {
        // 统一捕获一些错误的处理
        console.log('统一捕获一些错误的处理')
        // 返回错误信息
        return {
            success: false,
            msg: '接口调用异常:' + err
        }
    }
}